#include "../headers/drawing.h"
void initDevice(int w, int h, struct drawing *device)
{
	if(w<0 || h<0)
	{
		w=100;
		h=100;
	}

	device->width=w;
	device->height=h;
	device->nRecord=0;
}
int addOperation(char *op, int userID, struct drawing *device, int fileDescriptor)
{
	if(device->nRecord-1==NUMBER_OPERATION)
		return 0;
	//On créer une opération
	struct operation o;
	o.opString=op;
	o.userID=userID;
	
	//On récupère l'heure
	time_t t=time(NULL);
	strftime(o.time, sizeof(o.time), "%X", localtime(&t));
	
	//On l'ajoute à la liste des opérations
	device->list[device->nRecord]=o;
	device->nRecord++;
	
	//On informe le serveur que l'opération a été faite
	printOp(fileDescriptor, o);
	return 1;
}
void clear(struct drawing *device, int fileDescriptor)
{	
		
	struct operation tmp[NUMBER_OPERATION];
	//device.list=tmp;
	device->nRecord=0;
}
/*
	On affiche une zone de dessin (la liste des opérations)
*/
void printDrawing(int fileDescriptor, struct drawing device)
{
	sendMSG(fileDescriptor, "Prepare to print operation ... ");
	
	if(device.nRecord==0)
        {
                sendMSG(fileDescriptor, "No operation to print! ");
                return;
        }	

	int i;
	for(i=0; i<device.nRecord; ++i)
	{
		struct operation op=device.list[i];
		printOp(fileDescriptor, op);
	}
}
/*
	On affiche une opération suivant le format ci-dessous
*/
void printOp(int fileDescriptor, struct operation op)
{
	char buffer[100];
	sprintf(buffer, "%d", op.userID);

	char str[100];
	strcpy(str, "OPERATION: ");
	strcat(str, op.opString);
	strcat(str, " USER: ");
	strcat(str, buffer);
	strcat(str, " ");
		
	sendMSG(fileDescriptor, str);	
}
